1. Technical Field
The present disclosure relates to the integrated memories field. Specifically, the present disclosure relates to a non-volatile memory device; more particularly, the present disclosure regards a phase change memory device.
2. Description of the Related Art
Non-volatile memory is a type of memory that can retain the stored information even when not powered. Just to mention a few examples, known semiconductor non-volatile memories include erasable and programmable read-only memories, flash memories, and phase change memories. In such types of memory the information is stored in memory cells arranged in one or more memory arrays.
The memory cells of a memory array are arranged in rows and columns, wherein each row contains a number of memory cells that represent a number of bytes. Typically, the memory arrays are arranged so that a number of rows are then grouped into sectors in which each sector contains thousands of bytes (kilobytes). In some cases, the size of the sectors of a memory array may vary from one another.
For example, an 8 megabit flash memory device may incorporate a sector arrangement of a single 32 kilobyte sector, eight 4 kilobyte sectors, a single 64 kilobyte sector, and seven 128 kilobyte sectors. In this exemplary arrangement, the first sector in the array—the 32 kilobyte sector—may be allocated to store boot code, while the smaller 4 kilobyte sectors may be allocated for configuration data and parameter storage. Some of the larger sectors in the array may be used to store the system's main program code with the remaining sectors allocated for user data storage.
In order to increase the reliability of said devices, it is desirable to protect some of these sectors against unintentional or malicious program and erase operations. In the example described above, the sectors storing the boot code, the configuration data, and the main program code would most likely need to be protected. If any of these sectors were to be inadvertently erased or programmed with erroneous information, then the system would not function properly.
For this purpose, modern non-volatile memory devices are provided with so called protection registers. A protection register is a dedicated memory register that may be used for storing information regarding the protection of the data memorized in the various sectors of the memory device. For example, each sector of a memory array may be associated with a corresponding protection bit stored in the protection register, whose value determines whether the memory cells of said sector can be programmed (and erased) or not. In this way, the information stored in the memory cells of a sector whose corresponding protection bit indicates that said sector is “locked” can be efficiently protected against accidental (or unauthorized) alterations.
According to a solution known in the art, the protection registers are implemented by means of storage elements, referred to as protection memory cells, which are arranged in a dedicated mini-array separated from the other memory arrays of the device. A mini-array of such type is provided with a dedicated read circuit configured to interpret the protection bits stored in the protection memory cells for accordingly driving the program circuits of the memory arrays in such a way to allow or deny any programming (or erasing) operation directed to the memory cells thereof; in order to allow the selective alteration of the protection given to the various sectors, such mini-array may be provided with a dedicated program circuit that allows to change the values of the protection bits. However, this solution is disadvantageous, because the area required for integrating such mini-arrays and the dedicated read and program circuits in the chip wherein the memory is integrated is not negligible.
For these reasons, in most flash memory devices the protection registers are preferably implemented using memory cells that belong to the memory arrays instead of using a dedicated mini-array. Indeed, by using standard memory cells as protection memory cells, it is not necessary to provide for dedicated read and program circuits for the protection register, since the protection memory cells can be read and programmed using the read and program circuits of the memory arrays.
However, this solution suffers from a major drawback which strictly depends on the major limitation affecting the flash memory devices: as it is well known to those skilled in the art, although a flash memory can be read or programmed a byte or a word at a time in a random access fashion, it must be erased a “block” at a time, wherein with the term “block” it is intended a group of memory cells which are realized in a same well, and thus that share a common bulk. For example, one of such blocks of memory cells may correspond to an entire sector, or a portion thereof. An erasing operation sets all the memory cells of a block to an erased condition, for example corresponding to a logic “1”. Starting with a freshly erased block, any memory cell within that block can be programmed, for example to a logic “0”. However, once a memory cell has been set to “0”, only by erasing the entire block can it be changed back to “1”. Thus, by using the standard memory cells of a flash memory array as protection memory cells, it is not possible to selectively modify the protection given to a single sector without having to erase the whole block to which the protection memory cells belong.